home *** CD-ROM | disk | FTP | other *** search
/ Champak 138 / Volume 138 Aug 19 2011 - Damaged.iso / Games / shadez.swf / scripts / Local / Game / World / Map / CMap.as
Encoding:
Text File  |  2011-08-19  |  9.2 KB  |  306 lines

  1. package Local.Game.World.Map
  2. {
  3.    import Local.Game.Thing.*;
  4.    import Local.Game.World.*;
  5.    import Local.Game.World.Map.Cell.*;
  6.    import flash.events.*;
  7.    import flash.geom.*;
  8.    
  9.    public class CMap
  10.    {
  11.       
  12.       public static const mCellSize:int = CCell.mSize;
  13.       
  14.       public static const mBloatCells:Number = mCellSize * 3;
  15.       
  16.       public static const mPadCells:Number = 3;
  17.       
  18.       public static const mCellScalar:Number = 1 / mCellSize;
  19.        
  20.       
  21.       private var mCells:Array;
  22.       
  23.       public var mWorldWidth:int;
  24.       
  25.       private var mDumbMax:CCell;
  26.       
  27.       public var mWidth:int;
  28.       
  29.       private var mDumbMin:CCell;
  30.       
  31.       public function CMap(param1:CLandscape)
  32.       {
  33.          var _loc2_:int = 0;
  34.          super();
  35.          mWidth = Math.ceil(param1.mWidth * mCellScalar);
  36.          mWorldWidth = mWidth * mCellSize;
  37.          mCells = new Array();
  38.          _loc2_ = 0;
  39.          loop0:
  40.          while(true)
  41.          {
  42.             ┬º┬ºpush(_loc2_);
  43.             ┬º┬ºpush(mWidth);
  44.             if(false)
  45.             {
  46.                break;
  47.             }
  48.             if(┬º┬ºpop() >= ┬º┬ºpop())
  49.             {
  50.                mDumbMin = new CCell(-1,[param1.GetAltitude(0)]);
  51.                mDumbMax = new CCell(mWidth,[param1.GetAltitude(mWidth * mCellSize - 1)]);
  52.                mDumbMin.mDumbCell = mDumbMax.mDumbCell = true;
  53.                _loc2_ = 0;
  54.                while(true)
  55.                {
  56.                   ┬º┬ºpush(_loc2_);
  57.                   ┬º┬ºpush(mWidth);
  58.                   break loop0;
  59.                   addr95:
  60.                   mCells[_loc2_].mNext = _loc2_ + 1 >= mWidth ? null : mCells[_loc2_ + 1];
  61.                   mCells[_loc2_].mPrev = _loc2_ - 1 < 0 ? null : mCells[_loc2_ - 1];
  62.                   _loc2_++;
  63.                }
  64.                addr141:
  65.                return;
  66.                addr138:
  67.             }
  68.             mCells.push(new CCell(_loc2_,param1.GetAltitudesQ(_loc2_ * mCellSize,(_loc2_ + 1) * mCellSize)));
  69.             _loc2_++;
  70.          }
  71.          while(true)
  72.          {
  73.             if(┬º┬ºpop() >= ┬º┬ºpop())
  74.             {
  75.                ┬º┬ºgoto(addr141);
  76.             }
  77.             else
  78.             {
  79.                ┬º┬ºgoto(addr95);
  80.             }
  81.          }
  82.       }
  83.       
  84.       public function InMapX(param1:Number) : Boolean
  85.       {
  86.          ┬º┬ºpush(param1);
  87.          if(true)
  88.          {
  89.             ┬º┬ºpush(0);
  90.             if(true)
  91.             {
  92.                return ┬º┬ºpop() >= ┬º┬ºpop() && param1 < mWorldWidth;
  93.             }
  94.          }
  95.          ┬º┬ºgoto(addr21);
  96.       }
  97.       
  98.       public function RemoveRefThing(param1:*, param2:CCell) : void
  99.       {
  100.          if(true)
  101.          {
  102.             param2.RemoveRefThing(param1);
  103.          }
  104.       }
  105.       
  106.       public function RemoveThing(param1:*, param2:CCell) : void
  107.       {
  108.          if(true)
  109.          {
  110.             param2.RemoveThing(param1);
  111.          }
  112.       }
  113.       
  114.       public function GetCellAt(param1:Number) : CCell
  115.       {
  116.          if(true)
  117.          {
  118.             return param1 < 0 ? mDumbMin : (param1 >= mWorldWidth ? mDumbMax : mCells[Math.floor(param1 * mCellScalar)]);
  119.          }
  120.          ┬º┬ºgoto(addr27);
  121.       }
  122.       
  123.       public function AddThing(param1:CThingMap) : CCell
  124.       {
  125.          var _loc2_:CCell = null;
  126.          _loc2_ = GetCellAt(param1.GetPosition().x);
  127.          _loc2_.AddThing(param1);
  128.          return _loc2_;
  129.       }
  130.       
  131.       public function GetDrawThings(param1:Number, param2:Number) : Object
  132.       {
  133.          var _loc3_:Object = null;
  134.          var _loc4_:* = undefined;
  135.          var _loc5_:Array = null;
  136.          var _loc6_:CCell = null;
  137.          _loc3_ = new Object();
  138.          _loc5_ = GetCells(param1,param2);
  139.          if(param1 < 0)
  140.          {
  141.             _loc5_.push(mDumbMin);
  142.          }
  143.          if(param2 >= mWidth * mCellSize)
  144.          {
  145.             _loc5_.push(mDumbMax);
  146.          }
  147.          for each(_loc6_ in _loc5_)
  148.          {
  149.             if(true)
  150.             {
  151.                ┬º┬ºpush(0);
  152.                if(true)
  153.                {
  154.                   for each(_loc4_ in _loc6_.mMapwho)
  155.                   {
  156.                      _loc3_[_loc4_.nID] = _loc4_;
  157.                   }
  158.                   ┬º┬ºpush(0);
  159.                }
  160.                for each(_loc4_ in _loc6_.rMapwho)
  161.                {
  162.                   _loc3_[_loc4_.nID] = _loc4_;
  163.                }
  164.             }
  165.          }
  166.          return _loc3_;
  167.       }
  168.       
  169.       public function InMap(param1:Number, param2:Number) : Boolean
  170.       {
  171.          if(true)
  172.          {
  173.             ┬º┬ºpush(param1);
  174.             ┬º┬ºpush(0);
  175.             if(true)
  176.             {
  177.                ┬º┬ºpush(┬º┬ºpop() >= ┬º┬ºpop());
  178.                if(true)
  179.                {
  180.                   if(┬º┬ºpop())
  181.                   {
  182.                      if(true)
  183.                      {
  184.                         ┬º┬ºpop();
  185.                         if(true)
  186.                         {
  187.                            ┬º┬ºpush(param1);
  188.                            ┬º┬ºpush(mWorldWidth);
  189.                            if(true)
  190.                            {
  191.                               ┬º┬ºpush(┬º┬ºpop() < ┬º┬ºpop());
  192.                               if(true)
  193.                               {
  194.                                  addr39:
  195.                                  ┬º┬ºpush(┬º┬ºpop() && param2 >= 0);
  196.                               }
  197.                               if(┬º┬ºpop())
  198.                               {
  199.                                  addr54:
  200.                                  ┬º┬ºpop();
  201.                                  ┬º┬ºgoto(addr58);
  202.                               }
  203.                               addr58:
  204.                               return param2 < 500;
  205.                            }
  206.                         }
  207.                         ┬º┬ºgoto(addr44);
  208.                      }
  209.                      ┬º┬ºgoto(addr54);
  210.                   }
  211.                   ┬º┬ºgoto(addr39);
  212.                }
  213.             }
  214.          }
  215.          ┬º┬ºgoto(addr54);
  216.       }
  217.       
  218.       public function GetCells(param1:Number, param2:Number) : Array
  219.       {
  220.          if(true)
  221.          {
  222.             if(param1 > param2)
  223.             {
  224.                if(true)
  225.                {
  226.                   param2 = Math.max(0,Math.floor(param2 * mCellScalar));
  227.                   if(true)
  228.                   {
  229.                      param1 = Math.min(mWidth - 1,Math.floor(param1 * mCellScalar));
  230.                      if(true)
  231.                      {
  232.                         ┬º┬ºpush(param2);
  233.                         ┬º┬ºpush(mWidth);
  234.                         if(true)
  235.                         {
  236.                            ┬º┬ºpush(┬º┬ºpop() >= ┬º┬ºpop());
  237.                            ┬º┬ºpush(┬º┬ºpop() >= ┬º┬ºpop());
  238.                            if(true)
  239.                            {
  240.                               if(!┬º┬ºpop())
  241.                               {
  242.                                  ┬º┬ºpop();
  243.                                  if(true)
  244.                                  {
  245.                                     ┬º┬ºpush(param1);
  246.                                     ┬º┬ºpush(0);
  247.                                     if(true)
  248.                                     {
  249.                                        return (┬º┬ºpop() < ┬º┬ºpop() ? [] : mCells.slice(param2,param1 + 1)).reverse();
  250.                                        addr65:
  251.                                     }
  252.                                  }
  253.                                  else
  254.                                  {
  255.                                     addr78:
  256.                                     param1 = Math.max(0,Math.floor(param1 * mCellScalar));
  257.                                     addr88:
  258.                                     param2 = Math.min(mWidth - 1,Math.floor(param2 * mCellScalar));
  259.                                     ┬º┬ºpush(param1);
  260.                                     ┬º┬ºpush(mWidth);
  261.                                  }
  262.                                  return ┬º┬ºpop() >= ┬º┬ºpop() || param2 < 0 ? [] : mCells.slice(param1,param2 + 1);
  263.                                  addr103:
  264.                               }
  265.                               ┬º┬ºgoto(addr65);
  266.                            }
  267.                            ┬º┬ºgoto(addr103);
  268.                         }
  269.                         ┬º┬ºgoto(addr107);
  270.                      }
  271.                   }
  272.                   ┬º┬ºgoto(addr88);
  273.                }
  274.                ┬º┬ºgoto(addr107);
  275.             }
  276.             ┬º┬ºgoto(addr78);
  277.          }
  278.          ┬º┬ºgoto(addr109);
  279.       }
  280.       
  281.       public function AddRefThing(param1:CThingMap) : CCell
  282.       {
  283.          var _loc2_:CCell = null;
  284.          _loc2_ = GetCellAt(param1.GetPosition().x);
  285.          _loc2_.AddRefThing(param1);
  286.          return _loc2_;
  287.       }
  288.       
  289.       public function GetThings(param1:Number, param2:Number) : Array
  290.       {
  291.          var _loc3_:Array = null;
  292.          var _loc4_:CCell = null;
  293.          var _loc5_:* = undefined;
  294.          _loc3_ = new Array();
  295.          for each(_loc4_ in GetCells(param1,param2))
  296.          {
  297.             for each(_loc5_ in _loc4_.mMapwho)
  298.             {
  299.                _loc3_.push(_loc5_);
  300.             }
  301.          }
  302.          return _loc3_;
  303.       }
  304.    }
  305. }
  306.